part of '../repository.dart';

class _PurchaseItemDtoFactory {
  const _PurchaseItemDtoFactory._internal();

  static const _instance = _PurchaseItemDtoFactory._internal();

  factory _PurchaseItemDtoFactory() {
    return _instance;
  }

  _PurchaseItemDto fromJson(Map<String, dynamic> json) {
    final type = json[_kPurchaseItemTypeKey] as String;

    if (type == _kSubscriptionTypeValue) {
      return _SubscriptionDto.fromJson(json);
    }

    if (type == _kOneTimePurchaseItemTypeValue) {
      return _OneTimePurchaseItemDto.fromJson(json);
    }

    throw UnimplementedError();
  }

  // _PurchaseItemDto fromEntity(WebPurchaseItem purchaseItem) {
  //   if (purchaseItem is WebSubscription) {
  //     return _SubscriptionDto.fromEntity(purchaseItem);
  //   }
  //
  //   if (purchaseItem is WebOneTimePurchaseItem) {
  //     return _OneTimePurchaseItemDto.fromEntity(purchaseItem);
  //   }
  //
  //   throw UnimplementedError();
  // }
}